from tqsdk import TqApi, TqAuth, TqSim, tafunc,TqKq
import datetime
import pandas as pd

回测代码="SZSE.000034"   #sse,szse
回测天数=60
回购股数=5000000

now = datetime.datetime.now()
if now.hour >= 9 and now.hour < 15:
    K线记录数=回测天数*8
else:
    K线记录数=(回测天数+1)*8
  #包含当前
api = TqApi(TqKq(), auth=TqAuth("zhangwq14", "zhangwq14"))
三十分钟=api.get_kline_serial(回测代码,60*30,K线记录数)
for index,row in 三十分钟.iterrows():

    # 将纳秒数转换成datetime对象
    dt = datetime.datetime.fromtimestamp(row["datetime"] / 1000000000)
    # 将datetime对象转换成HH-MM-SS字符串格式
    time_str = dt.strftime("%H-%M-%S")
    三十分钟.loc[index,"datetime"]=time_str
总交易量=三十分钟["volume"].sum()
summary = 三十分钟.groupby('datetime').agg({'volume': ['mean', 'max',"min","sum"]})
汇总数据=pd.DataFrame(summary)
汇总数据.columns = 汇总数据.columns.map('_'.join)
# 汇总数据 = 汇总数据.reset_index(drop=True)
汇总数据["占比"]=汇总数据["volume_sum"]/总交易量
单时间片={}
日期列表=汇总数据.index.tolist()
跨时间片={}
for i in  日期列表:
    for j in  日期列表:
        if i==j:
            #不跨时间段
            跨时间片[i+" to "+j]=汇总数据.loc[i,"volume_mean"]
        elif i>j:
            pass
        elif i<j:
            开始索引=日期列表.index(i)

            结束索引=日期列表.index(j)
            满足行索引=日期列表[开始索引:结束索引+1]
            sum_B = 汇总数据.loc[满足行索引, 'volume_mean'].sum()
            跨时间片[i+" to "+j]=sum_B
回购测算时间段=pd.DataFrame.from_dict(跨时间片,orient='index')
回购测算时间段.columns = ['累计交易量']
# 回购测算时间段 = 回购测算时间段.rename(columns={'0': '累计交易量'})


回购测算时间段["连续买入最大参与率"]=回购股数/回购测算时间段["累计交易量"]
汇总数据.to_csv(r".\汇总数据.csv")
回购测算时间段.to_csv(r".\回购测算时间段.csv")
print("已完成")
api.close()
